Documentation forSolarWinds Observability SaaS

FAQ for Agent locally managed mode

How do I set up multiple integrations?

Configure all integrations in the same local_config.yaml file. You can mix credential sources for each integration.

Example:

integrations:
  otel/elasticsearch:
    - name: test-elasticsearch-1
      status-url: http://localhost:9200
      collection-interval: 5s
      password:
        value-from:
          provider: akeyless
          secret-name: your-secret-name-1
  otel/elasticsearch:
    - name: test-elasticsearch-2
      status-url: http://localhost:9201
      collection-interval: 5s
      password:
        value-from:
          provider: akeyless
          secret-name: your-secret-name-2
  otel/nginx:
    - name: test-nginx
      endpoint: http://localhost:80/status
      collection-interval: 5s 
  otel/hostmetrics:
    - name: myhost123
  dbo/mysql:
    - name: test-mysql
      host: localhost
      port: 3306
      user: root
      password:
        value-from:
          provider: aws-secrets-manager
          secret-name: dev/uams/mysql
          secret-key: mysql-database-password

How do I set up multiple credentials providers?

Configure all credentials providers in the same credentials_config.yaml file. You can mix credential providers.

Example:

credentials:
  hashicorp-vault:
    address: http://127.0.0.1
    auth:
      type: token
      token:
        value-from:
          provider: env
          key: HASHICORP_VAULT_TOKEN_1
  infisical:
    auth:
      type: universal
      client-id: "your-client-id"
      client-secret: "your-secret"
    project-id: "your-project-id-written"
    site-url: "http://192.168.10.20"
    cache-expiry: 40  
  hashicorp-vault/second-vault:
    address: http://127.0.0.2
    auth:
      type: token
      token:
        value-from:
          provider: env
          key: HASHICORP_VAULT_TOKEN_2

Can I mix local and remote configuration options?

No. If the SolarWinds Observability Agent starts in locally managed mode, you cannot push configurations from SolarWinds Observability SaaS. Users cannot remotely add any DBO or OTel/Telegraf-based integrations.

How do I migrate my SolarWinds Observability Agent currently configured in SolarWinds Observability SaaS (remote configuration)?

Migration is not supported. You must remove the existing SolarWinds Observability Agent and deploy a new one with local configuration.

How do I lock the exact version of SolarWinds Observability Agent and plugins from local configuration?

Use the agent-version and plugin-versions parameters in the local_config.yaml file. Always specify both parameters.

agent-version: 1.0.0
plugin-versions:
  otel: 1.2.3
  dbo: 1.0.2
integrations:
  otel/elasticsearch:
    - name: test-elasticsearch
      status-url: http://localhost:9200
      collection-interval: 5s
      password:
        value-from:
          provider: akeyless
          secret-name: your-secret-name
  otel/nginx:
    - name: test-nginx
      endpoint: http://localhost:80/status
      collection-interval: 5s 
  otel/hostmetrics:
    - name: myhost123

How do I set up auto updates in locally managed mode?

This works like the remotely managed SolarWinds Observability Agent. However, when agent or plugin version pinning is enabled, auto-updates are blocked, and versions remain locked to those specified in the local_config.yaml file.

Are there other methods of integrating with HasihCorp supported?

The following is a list of all HashiCorp settings supported by the SolarWinds Observability Agent:

Configuration Field Name Environmental Variable Name Description

kv-version

-

KV version.

Default: v2

kv-mount-path

-

KV mount path.

Default: secret

address

VAULT_ADDR

Address of the Vault server.

agent-address

VAULT_AGENT_ADDR

Address of the Vault Agent, if used.

ca-cert

VAULT_CACERT

Path to a PEM-encoded CA certificate file on the local disk. Used to verify SSL certificates for the server.

ca-path

VAULT_CAPATH

Path to a directory with PEM-encoded CA certificate files on the local disk. Used to verify SSL certificates for the server.

client-cert

VAULT_CLIENT_CERT

Path to a PEM-encoded CA certificate file on the local disk. Used for TLS communication with the server.

client-key

VAULT_CLIENT_KEY

Path to a PEM-encoded private key that matches the client certificate set with client-cert.

tls-server-name

VAULT_TLS_SERVER_NAME

Name of the SNI host for TLS handshake resolution for TLS connections to Vault.

tls-skip-verify

VAULT_SKIP_VERIFY

Disable verification for all TLS certificates. Use with caution. Disabling TLS certificate verification decreases the security of data transmissions to and from the Vault server.

client-timeout

VAULT_CLIENT_TIMEOUT

Amount of time, in [s

srv-lookup

VAULT_SRV_LOOKUP

Use SRV records instead of standard DNS to look up hostnames.

Default: false

disable-redirects

VAULT_DISABLE_REDIRECTS

Disable the default redirect behavior so it honors the first redirect response from the underlying API instead of following the full HTTP redirect chain.

Default: false

max-retries

VAULT_MAX_RETRIES

The number of times it should retry a request to the Vault server when it receives 412 or 5xx error code. To disable retrying, set VAULT_MAX_RETRIES to 0.

Default: 2

namespace

VAULT_NAMESPACE

Root namespace for the integration. Setting a default namespace allows relative mount paths.

How do I use the shared config and credentials files to globally configure AWS Secret Manager SDK?

To set up the AWS credentials from config and credentials files used for authentication to AWS Secrets Manager, define the following auth block.

credentials:
  aws-secrets-manager:
    auth:
      type: files
      config-file-path: <path_to_your_config_file>
      credentials-file-path: <path_to_your_credentials_file>
      profile: <name_of_profile_from_config> # this field is optional, you can define a default profile in the AWS configuration files

How do I grant access to the file for the SolarWinds Observability Agent (swagent user) running on the Linux machine

SolarWinds Observability Agent requires access to the log folder. Use the following command to grant access:

  1. Grant the agent access to log files:

    usermod -a -G adm swagent
  2. Restart the agent:

    service uamsclient restart

How do I deploy Agent in Kubernetes using the locally managed mode

  1. Create a uams namespace:
    kubectl create namespace uams
  2. Create a configmap.yaml config map file:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: uams
      name: swo-agent-local-config
    data:
      local_config: |
        integrations:
          dbo/mysql:
            - name: mysql-integration-1
            # fill out settings
    
    # if you want to use 3rd party credential providers, you can define them here
    #---
    #apiVersion: v1
    #kind: ConfigMap
    #metadata:
    #  namespace: uams
    #  name: swo-agent-credentials-config
    #data:#  credentials_config: |
    #    credentials:
    #      hashicorp-vault:
    #        auth:
    #          type: env-vars
    #          token: HASHICORP_VAULT_TOKEN
  3. Apply the configuration:

    kubectl apply -f configmap.yaml
  4. Create an access token secret:

    kubectl create secret generic access-token -n uams --from-literal=ACCESS_TOKEN="<swo-access-token>"
  5. If you want to use a third party credential provider as above, create a secret with the HashiCorp Vault token:

    kubectl create secret generic hashicorp-vault-token -n uams --from-literal=HASHICORP_VAULT_TOKEN="<hashicorp-vault-token>"
  6. Create the deployment

    apiVersion: apps/v1 kind: Deployment metadata: name: uamsclient-deployment namespace: uams labels: k8s-app: uamsclient spec: replicas: 1 selector: matchLabels: app: uamsclient template: metadata: labels: app: uamsclient spec: restartPolicy: Always containers: - name: uamsclient image: solarwinds/swo-agent:latest env: - name: UAMS_CLIENT_ID_OVERRIDE value: <uuid> # fill this out - name: SWO_URL value: <swo-url> # fill this out - name: UAMS_CONTAINER_HOSTNAME value: <hostname> # fill this out - name: UAMS_LOCAL_CONFIGURATION_FILE_PATH value: /etc/local-config/local_config.yaml # if you want to use 3rd party credential providers as above, you have to specify credentials configuration file path #- name: UAMS_CREDENTIALS_CONFIGURATION_FILE_PATH # value: /etc/credentials-config/credentials_config.yaml - name: UAMS_ACCESS_TOKEN valueFrom: secretKeyRef: name: access-token key: ACCESS_TOKEN # if you want to use 3rd party credential providers as above, you can define HASHICORP_VAULT_TOKEN env variable #- name: HASHICORP_VAULT_TOKEN # valueFrom: # secretKeyRef: # name: hashicorp-vault-token # key: HASHICORP_VAULT_TOKEN volumeMounts: - name: config-volume mountPath: "/etc/local-config" readOnly: true # if you want to use 3rd party credential providers as above, you can define the credentials_config volume #- name: credentials-config-volume # mountPath: "/etc/credentials-config" # readOnly: true volumes: - name: config-volume configMap: name: swo-agent-local-config items: - key: local_config path: local_config.yaml # if you want to use 3rd party credential providers as above, you can define the credentials_config volume #- name: credentials-config-volume # configMap: # name: swo-agent-credentials-config # items: # - key: credentials_config # path: credentials_config.yaml

  7. Apply the deployment.

    kubectl apply -f deployment.yaml